﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Linq;
using System.Configuration;
using DevExpress.Web.ASPxGridView;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxFileManager;
using System.Data;
using System.IO;
using DataAccess;
using Common;

public partial class Contratacion : PageBase
{
    #region contratosDataTableCache
    private DataTable contratosDataTableCache
    {
        get
        {
            DataTable objTable = null;
            if (Cache["contratosDataTableCache.aspx" + Session.SessionID] != null)
                objTable = (DataTable)Cache["contratosDataTableCache.aspx" + Session.SessionID];
            return objTable;
        }
        set
        {
            if (value != null)
            {
                Cache.Insert("contratosDataTableCache.aspx" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
            }
        }
    }
    #endregion

    #region EpsDisponiblesDataTableCache
    private DataTable EpsDisponiblesDataTableCache
    {
        get
        {
            DataTable objTable = null;
            if (Cache["EpesDisponiblesTableCache.aspx" + Session.SessionID] != null)
                objTable = (DataTable)Cache["EpesDisponiblesTableCache.aspx" + Session.SessionID];
            return objTable;
        }
        set
        {
            if (value != null)
            {
                Cache.Insert("EpesDisponiblesTableCache.aspx" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
            }
        }
    }
    #endregion

    #region EpsAsociadosDataTableCache
    private DataTable EpsAsociadosDataTableCache
    {
        get
        {
            DataTable objTable = null;
            if (Cache["EpsAsociadosDataTableCache.aspx" + Session.SessionID] != null)
                objTable = (DataTable)Cache["EpsAsociadosDataTableCache.aspx" + Session.SessionID];
            return objTable;
        }
        set
        {
            if (value != null)
            {
                Cache.Insert("EpsAsociadosDataTableCache.aspx" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
            }
        }
    }
    #endregion

    #region StrCcoId
    public string StrCcoId
    {
        get
        {
            if (ViewState["StrCcoId"] != null)
                return ViewState["StrCcoId"].ToString();
            return "";
        }
        set { ViewState["StrCcoId"] = value; }
    }
    #endregion

    #region StrCttId
    public string StrCttId
    {
        get
        {
            if (ViewState["StrCttId"] != null)
                return ViewState["StrCttId"].ToString();
            return "";
        }
        set { ViewState["StrCttId"] = value; }
    }
    #endregion

    #region StrPlnId

    public string StrPlnId
    {
        get
        {
            if (ViewState["strPlnId"] != null)
                return ViewState["strPlnId"].ToString();
            else
                return "";
        }
        set { ViewState["strPlnId"] = value; }
    }
    #endregion

    #region TraerContextItems
    private void TraerContextItems()
    {
        if (Context != null)
        {

            if (Context.Items["StrCcoId"] != null)
                StrCcoId = Context.Items["StrCcoId"].ToString();
        }
    }
    #endregion

    //DataSet ds = null;

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //AccordionPane1.Enabled = false;
            if (Request.QueryString["e"] != null && Request.QueryString["a"] != null && Request.QueryString["r"] != null)
            {
                StrCttId = Request.QueryString["a"].ToString();
                StrCcoId = Request.QueryString["e"].ToString();
                StrPlnId = Request.QueryString["r"].ToString();
                TabPanelContratos.ActiveTabIndex = 2;
            }
            else
            {
                TraerContextItems();
            }

            cargarNaturalezaJuridica();
            cargarDepartamentos();
            cargarTiposDocumentosIdentidad();
            cargarModalidadSeleccion();
            cargarTipoContratos();
            cargarTipoLiquidacion();
            cargarSupervisores();
            bindEpesDisponibles();

            if(Usuario.PerfilActual == 103 || Usuario.PerfilActual == 22)
            btnReproteCertificacionLaboral.Visible = true;
            else
            btnReproteCertificacionLaboral.Visible = false;

            if (StrCcoId != "")
            {
                CargarDatosContratistas();
                // valida si existen contratos
                aspxFileManagerContratista.Visible = true;
                BindDatoscontratos();
                if (StrCttId != "")
                {
                    CargarDatosContratoPapa();
                    //limpiarCamposContrato();
                }
            }
            else
            {
                limpiarCamposContrato();
                limpiarCamposContratista();
            }

            // se debe consulta el rubro asociado al usuario

            string strAdministradores = ConfigurationManager.AppSettings["OtrasEntidades"].ToString();
            string[] strArregloAdministradores = strAdministradores.Split(',');
            bool boolBandera = false;



            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.ADM_PERMISOS_EPEs
                        where object.Equals(a.USU_ID, Usuario.UsuId)
                        select a;
            foreach (var v in datos)
            {
                

                foreach (string var in strArregloAdministradores)
                {
                    // es administrador mostrar todos
                    if (var == v.PLN_ID.ToString())
                    {
                        boolBandera = true;
                        break;
                    }
                }

                if (boolBandera)
                {

                    lblReporteTerminosReferencia.Visible = false;
                    btnReporteTerminosReferencia.Visible = false;

                    lblReportePresentacionPropuesta.Visible = false;
                    btnReportePresentacionPropuesta.Visible = false;

                    lblReporteContratoObra.Visible = false;
                    btnReporteContratoObra.Visible = false;

                    btnReporteContratoInterventoria.Visible = false;
                    lblReporteContratoInterventoria.Visible = false;

                    lblReporteSolicitudContrato.Visible = false;
                    btnReporteSolicitudContrato.Visible = false;

                    lblCertificacionLaboral.Visible = true;
                    btnReproteCertificacionLaboral.Visible = true;
                }
            }



            

            

        }
        else
        {
            if (contratosDataTableCache != null)
            {
                ASPxGridViewContratos.DataSource = contratosDataTableCache;
                ASPxGridViewContratos.DataBind();
            }
            if (EpsAsociadosDataTableCache != null)
            {
                ASPxGridViewEpsRelacionados.DataSource = EpsAsociadosDataTableCache;
                ASPxGridViewEpsRelacionados.DataBind();
            }
            if (EpsDisponiblesDataTableCache != null)
            {
                ASPxGridViewEpsDisponibles.DataSource = EpsDisponiblesDataTableCache;
                ASPxGridViewEpsDisponibles.DataBind();
            }

        }

    }
    #endregion

    #region ApplyFileManagerSettings
    void ApplyFileManagerSettings(bool valor)
    {
        aspxFileManagerContratista.SettingsEditing.AllowMove = valor;
        aspxFileManagerContratista.SettingsEditing.AllowDelete = valor;
        aspxFileManagerContratista.SettingsEditing.AllowRename = valor;
        aspxFileManagerContratista.SettingsEditing.AllowCreate = valor;
        aspxFileManagerContratista.SettingsToolbar.ShowPath = valor;
        aspxFileManagerContratista.SettingsToolbar.ShowRefreshButton = valor;
        aspxFileManagerContratista.SettingsToolbar.ShowFilterBox = valor;
        aspxFileManagerContratista.SettingsToolbar.ShowDownloadButton = valor;
        aspxFileManagerContratista.SettingsFolders.ShowLockedFolderIcons = valor;
        aspxFileManagerContratista.SettingsFolders.ShowFolderIcons = valor;
        aspxFileManagerContratista.SettingsFolders.EnableCallBacks = valor;
        aspxFileManagerContratista.SettingsFolders.Visible = valor;
        aspxFileManagerContratista.SettingsUpload.Enabled = valor;

        aspxFileManagerContratista.SettingsUpload.UseAdvancedUploadMode = valor;
        aspxFileManagerContratista.SettingsUpload.AdvancedModeSettings.EnableMultiSelect = valor;
    }
    #endregion

    #region CargarDatosContratistas
    private void CargarDatosContratistas()
    {
        try
        {

            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.CON_CONTRATISTAs
                        where a.CCO_ID == Convert.ToDecimal(StrCcoId)

                        select a;
            foreach (var v in datos)
            {
                CCO_IDENTIFICACION.Text = v.CCO_IDENTIFICACION;
                ApplyFileManagerSettings(true);
                //string strRuta = @"C:\Users\TOSHIBA2013\Desktop\MCSIG\MCSIG_ADMIN\Archivos\";

                string strRuta = Server.MapPath("Archivos");

                if (!(Directory.Exists(strRuta + @"\" + v.CCO_IDENTIFICACION + @"\Contratista\")))
                {
                    Directory.CreateDirectory(strRuta + @"\" + v.CCO_IDENTIFICACION + @"\Contratista\");
                }
                aspxFileManagerContratista.Visible = true;
                aspxFileManagerContratista.Settings.RootFolder = @"~\Archivos\" + v.CCO_IDENTIFICACION + @"\Contratista\";
                aspxFileManagerContratista.Settings.InitialFolder = @"~\Archivos\" + v.CCO_IDENTIFICACION;
                aspxFileManagerContratista.Settings.ThumbnailFolder = @"~\Archivos\" + v.CCO_IDENTIFICACION;
                CCO_NOMBRE.Text = v.CCO_NOMBRE;
                lblNombreContratisa.Text = v.CCO_NOMBRE;
                CCO_DIRECCION.Text = v.CCO_DIRECCION;
                CCO_COREO_ELECTRONICO.Text = v.CCO_COREO_ELECTRONICO;
                CCO_TELEFONO_CELULAR.Text = v.CCO_TELEFONO_CELULAR;
                rblDocumentos.Value = v.DOC_ID.ToString();
                CCO_PROFESION.Text = v.CCO_PROFESION;
                ddlTNJ_ID_NATURALEZA_JURIDICA.Value = v.TNJ_ID_NATURALEZA_JURIDICA.ToString();

                if (ddlTNJ_ID_NATURALEZA_JURIDICA.Value.ToString() == "25")
                {
                    ASPxPanel1.Visible = false;
                }
                else
                {
                    //carga los datos de Representante
                    ASPxPanel1.Visible = true;
                    CCO_NOMBRE_REPRESENTANTE_LEGAL.Text = v.CCO_NOMBRE_REPRESENTANTE_LEGAL;
                    if (v.DOC_ID_REPRESENTANTE != null)
                        DOC_ID_REPRESENTANTE.Value = v.DOC_ID_REPRESENTANTE.ToString();
                    CCO_NUM_IDENTIFICACION_REPRESENTANTE.Text = v.CCO_NUM_IDENTIFICACION_REPRESENTANTE;
                    CCO_TELEFONO_FIJO.Text = v.CCO_TELEFONO_FIJO;

                    #region Carga Departamento y Municipio
                    if (!String.IsNullOrEmpty(v.ZON_ID_REPRESENTANTE))
                    {
                        string strDep = v.ZON_ID_REPRESENTANTE.Substring(0, 2);

                        ddlDepartamentoRepresentante.Value = strDep;

                        var datosZonas = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                                         where object.Equals(a.ZON_PADRE_ID, strDep)
                                         select a;
                        if (datosZonas != null)
                        {
                            ddlMunicipioRepresentante.DataSource = datosZonas;
                            ddlMunicipioRepresentante.TextField = "ZON_NOMBRE";
                            ddlMunicipioRepresentante.ValueField = "ZON_ID";
                            ddlMunicipioRepresentante.DataBind();
                            ddlMunicipioRepresentante.Value = v.ZON_ID;
                        }
                    }
                    #endregion


                }



                #region Carga Departamento y Municipio
                if (!String.IsNullOrEmpty(v.ZON_ID))
                {
                    string strDep = v.ZON_ID.Substring(0, 2);

                    ddlDepartamento.Value = strDep;

                    var datosZonas = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                                     where object.Equals(a.ZON_PADRE_ID, strDep)
                                     select a;
                    if (datosZonas != null)
                    {
                        ddlMunicipio.DataSource = datosZonas;
                        ddlMunicipio.TextField = "ZON_NOMBRE";
                        ddlMunicipio.ValueField = "ZON_ID";
                        ddlMunicipio.DataBind();
                        ddlMunicipio.Value = v.ZON_ID;
                    }
                }
                #endregion

                //ddlDepartamentoRepresentante
                //ddlMunicipioRepresentante
            }


        }
        catch (Exception ex)
        {
            ex.Message.ToString();
            //throw;
        }
    }
    #endregion

    #region ValidateSiteEdit
    void ValidateSiteEdit(FileManagerActionEventArgsBase e)
    {
        e.Cancel = true;//Utils.IsSiteMode;
        e.ErrorText = "error"; //Utils.GetReadOnlyMessageText();
    }
    #endregion

    #region cargarDepartamentos
    private void cargarDepartamentos()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                        where object.Equals(a.ZON_PADRE_ID, null)
                        select a;
            if (datos == null) return;
            ddlDepartamento.DataSource = datos;
            ddlDepartamento.TextField = "ZON_NOMBRE";
            ddlDepartamento.ValueField = "ZON_ID";
            ddlDepartamento.DataBind();
            ddlDepartamento.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("", ""));

            ddlDepartamentoRepresentante.DataSource = datos;
            ddlDepartamentoRepresentante.TextField = "ZON_NOMBRE";
            ddlDepartamentoRepresentante.ValueField = "ZON_ID";
            ddlDepartamentoRepresentante.DataBind();
            ddlDepartamentoRepresentante.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("", ""));


            ddlDepartamentoEjecucionContrato.DataSource = datos;
            ddlDepartamentoEjecucionContrato.TextField = "ZON_NOMBRE";
            ddlDepartamentoEjecucionContrato.ValueField = "ZON_ID";
            ddlDepartamentoEjecucionContrato.DataBind();
            ddlDepartamentoEjecucionContrato.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("", ""));

            if (StrPlnId != "")
            {
                var datosAbogados = from a in contexto.ADM_USUARIOs
                                    join b in contexto.ADM_PERMISOS_EPEs on a.USU_ID equals b.USU_ID
                                    where b.PLN_ID == Convert.ToDecimal(StrPlnId) && b.TEP_ID == 3
                                    select a;
                if (datosAbogados == null) return;
                ddlAbogados.DataSource = datosAbogados;
                ddlAbogados.TextField = "USU_NOMBRE";
                ddlAbogados.ValueField = "USU_ID";
                ddlAbogados.DataBind();
                ddlAbogados.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("", ""));
            }




        }
        catch (Exception)
        {

            throw;
        }
    }
    #endregion

    #region cargarNaturalezaJuridica
    private void cargarNaturalezaJuridica()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.ADM_NATURALEZA_JURIDICAs

                        select a;
            if (datos == null) return;
            ddlTNJ_ID_NATURALEZA_JURIDICA.DataSource = datos;
            ddlTNJ_ID_NATURALEZA_JURIDICA.TextField = "TNJ_NOMBRE";
            ddlTNJ_ID_NATURALEZA_JURIDICA.ValueField = "TNJ_ID_NATURALEZA_JURIDICA";
            ddlTNJ_ID_NATURALEZA_JURIDICA.DataBind();
            // ddlDepartamentoOrigen.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--TODOS--", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region cargarTiposDocumentosIdentidad
    private void cargarTiposDocumentosIdentidad()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.BAS_TIPOS_DOCUMENTOS_IDENTIDADs
                        where a.DOC_ACTIVO == 'S'
                        select a;
            if (datos == null) return;
            rblDocumentos.DataSource = datos;
            rblDocumentos.TextField = "DOC_NOMBRE";
            rblDocumentos.ValueField = "DOC_ID";
            rblDocumentos.DataBind();


            DOC_ID_REPRESENTANTE.DataSource = datos;
            DOC_ID_REPRESENTANTE.TextField = "DOC_NOMBRE";
            DOC_ID_REPRESENTANTE.ValueField = "DOC_ID";
            DOC_ID_REPRESENTANTE.DataBind();
            // ddlDepartamentoOrigen.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--TODOS--", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region ddlTNJ_ID_NATURALEZA_JURIDICA_SelectedIndexChanged
    protected void ddlTNJ_ID_NATURALEZA_JURIDICA_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlTNJ_ID_NATURALEZA_JURIDICA.Value.ToString() == "25")
            ASPxPanel1.Visible = false;
        else
            ASPxPanel1.Visible = true;
    }
    #endregion

    #region btnConsultar_Click
    protected void btnConsultar_Click(object sender, EventArgs e)
    {

    }
    #endregion

    #region GetDataView
    private DataTable GetDataView(ASPxGridView grid)
    {
        DataTable dt = new DataTable();
        foreach (GridViewColumn col in grid.VisibleColumns)
        {
            GridViewDataColumn dataColumn = col as GridViewDataColumn;
            if (dataColumn == null) continue;
            dt.Columns.Add(dataColumn.FieldName);
        }
        for (int i = 0; i < grid.VisibleRowCount; i++)
        {
            DataRow row = dt.Rows.Add();
            foreach (DataColumn col in dt.Columns)
                row[col.ColumnName] = grid.GetRowValues(i, col.ColumnName);
        }
        return dt;
    }
    #endregion

    #region TabPanelContratos_ActiveTabChanged
    protected void TabPanelContratos_ActiveTabChanged(object sender, EventArgs e)
    {
        limpiarCamposContrato();
        //por defecto debe dejar selccionado seleccion contrato
        rblSeleccionTipoContrato.Value = "1";

        if (TabPanelContratos.ActiveTabIndex == 2)
        {
            CargarDatosContratoPapa();
        }
    }
    #endregion

    #region limpiarCamposContratista
    private void limpiarCamposContratista()
    {
        aspxFileManagerContratista.Visible = false;
        lblNombreContratisa.Text = "";
        //ddlTNJ_ID_NATURALEZA_JURIDICA
        CCO_IDENTIFICACION.Text = "";
        //rblDocumentos
        CCO_NOMBRE.Text = "";
        //ddlDepartamento
        //ddlMunicipio
        CCO_DIRECCION.Text = "";
        CCO_COREO_ELECTRONICO.Text = "";
        CCO_TELEFONO_CELULAR.Text = "";
        CTT_DIAS_TOTAL_DURACION_CONTRATO.Text = "";
        CCO_NOMBRE_REPRESENTANTE_LEGAL.Text = "";
        //DOC_ID_REPRESENTANTE
        CCO_NUM_IDENTIFICACION_REPRESENTANTE.Text = "";
        CCO_TELEFONO_FIJO.Text = "";
        //ddlDepartamentoRepresentante
        //ddlMunicipioRepresentante
    }
    #endregion

    #region rblSeleccionTipoContrato_SelectedIndexChanged
    protected void rblSeleccionTipoContrato_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (rblSeleccionTipoContrato.Value == "1")
            limpiarCamposContrato();
        else if (rblSeleccionTipoContrato.Value == "2")
        {
            CargarDatosContratoPapa();
            //Bloquear Ciertos Campos de solo lecturra
            CTT_OBJETO.ReadOnly = true;

            //traer los datos del papa  
        }
    }
    #endregion

    protected void btnEnviarSolicitud_Click(object sender, EventArgs e)
    {

        //habilitar campo de numeraciòn envia correo a jefe contratos, y al usu inicial  perfil de administrador por rubro. CAMBIA ELPROYECTO
        //A ESTADO NUMERADO Y NO PERMITE SU EDICIÒN 
    }

    #region ddlDepartamento_SelectedIndexChanged
    protected void ddlDepartamento_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlDepartamento.Value.ToString() == "") return;
        if (ddlDepartamento.Value.ToString() == "0")
        {
            ddlMunicipio.Items.Clear();
            return;
        }

        ddlMunicipio.Items.Clear();
        Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
        var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                    where object.Equals(a.ZON_PADRE_ID, ddlDepartamento.Value)
                    select a;
        if (datos == null) return;
        ddlMunicipio.DataSource = datos;
        ddlMunicipio.TextField = "ZON_NOMBRE";
        ddlMunicipio.ValueField = "ZON_ID";
        ddlMunicipio.DataBind();
    }
    #endregion

    #region ddlDepartamentoRepresentante_SelectedIndexChanged
    protected void ddlDepartamentoRepresentante_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlDepartamentoRepresentante.Value.ToString() == "") return;
        if (ddlDepartamentoRepresentante.Value.ToString() == "0")
        {
            ddlMunicipioRepresentante.Items.Clear();
            return;
        }

        ddlMunicipioRepresentante.Items.Clear();
        Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
        var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                    where object.Equals(a.ZON_PADRE_ID, ddlDepartamentoRepresentante.Value)
                    select a;
        if (datos == null) return;
        ddlMunicipioRepresentante.DataSource = datos;
        ddlMunicipioRepresentante.TextField = "ZON_NOMBRE";
        ddlMunicipioRepresentante.ValueField = "ZON_ID";
        ddlMunicipioRepresentante.DataBind();
    }
    #endregion

    #region btnRegresar_Click
    protected void btnRegresar_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            Server.Transfer("ContratacionListado.aspx", true);
        }
        catch (Exception ex)
        {

            string strAlgo = ex.Message.ToString();
        }
    }
    #endregion

    #region btnRegistrarNuevoContrato_Click
    protected void btnRegistrarNuevoContrato_Click(object sender, EventArgs e)
    {
        StrCttId = "";
        limpiarCamposContrato();
        TabPanelContratos.ActiveTabIndex = 2;
        rblSeleccionTipoContrato.Value = "1";
        
        
    }
    #endregion

    ////////////////////////////////////////////
    //           PESTANA CONTRATOS            //
    ////////////////////////////////////////////

    #region limpiarCamposContrato
    private void limpiarCamposContrato()
    {

        CTT_DIAS_TOTAL_DURACION_CONTRATO.Text = "0";
        CTT_DIAS_PRORROGA.Text = "0";
        CTT_DIAS_SUSPENSIONES.Text = "0";

        CTT_NUMERO_CONTRATO.Text = "";
        CTT_FECHA_SUSCRIPCION.Text = "";
        CTT_FECHA_INICIO.Text = "";
        CTT_FECHA_TERMINACION.Text = "";
        CTT_FECHA_LIQUIDACION.Text = "";
        CTT_FECHA_SOLICITUD.Text = "";
        CTT_FECHA_TERMINACION_FINAL.Text = "";

        CTT_VALOR_CONTRATO.Text = "";
        CTT_VALOR_CONTRATO_MENSUAL.Text = "";
        CLI_VALOR_FINAL_CONTRATO.Text = "";
        CTT_OBJETO.Text = "";
        CTT_PLAZO.Text = "";
        CTT_OBLIGACIONES.Text = "";
        CTT_NUMERO_REGISTRO.Text = "";
        CLI_OBSERVACIONES.Text = "";
        CTT_ANO.Text = "";
        CTT_FORMA_PAGO.Text = "";

        CTT_INCLUYE_IVA.Checked = false;



        lblCTT_VALOR_CONTRATO.Text = "";
        lblCLI_VALOR_FINAL_CONTRATO.Text = "";
        lblCTT_VALOR_CONTRATO_MENSUAL.Text = "";
        CTT_NUMERO_CONTRATO.Text = "";
        CTT_FECHA_SUSCRIPCION.Text = "";
        CTT_NUMERO_REGISTRO.Text = "";
        CLI_OBSERVACIONES.Text = "";
        CTT_ANO.Text = "";
        CTT_FECHA_APROBACION_POLIZA.Text = "";
        if (EpsAsociadosDataTableCache != null)
            EpsAsociadosDataTableCache.Clear();
        StrCttId = "";
    }
    #endregion

    private void bindEpesDisponibles()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);


            //CARGA EPES ASOCIADOS AL CONTRATO
            var datosEpsDisponibles = from a in contexto.PAS_CONSULTAR_FIN_ACCION_EPE_DISPONIBLES(2015)
                                      select a;
            if (datosEpsDisponibles != null)
            {
                ASPxGridViewEpsDisponibles.BeginUpdate();
                ASPxGridViewEpsDisponibles.DataSource = datosEpsDisponibles;
                ASPxGridViewEpsDisponibles.DataBind();
                ASPxGridViewEpsDisponibles.EndUpdate();
                EpsDisponiblesDataTableCache = GetDataView(ASPxGridViewEpsDisponibles);
            }
        }
        catch (Exception ex)
        {

            lblMensaje.Text = ex.Message.ToString();
        }
    }


    private void bindEpesAsociados()
    {
        try
        {

            if (StrCttId != "")
            {
                Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
                //CARGA EPES ASOCIADOS AL CONTRATO


                var datosEpsRelacionados = from a in contexto.PAS_CONSULTAR_CON_CONTRATACION_FIN_ACCION_EPE_RELACIONADOS(Convert.ToDecimal(StrCttId))
                                           select a;
                if (datosEpsRelacionados != null)
                {
                    ASPxGridViewEpsRelacionados.BeginUpdate();
                    ASPxGridViewEpsRelacionados.DataSource = datosEpsRelacionados;// objProductosComercialesRendimientosData.DefaultView;
                    ASPxGridViewEpsRelacionados.DataBind();
                    ASPxGridViewEpsRelacionados.EndUpdate();
                    EpsAsociadosDataTableCache = GetDataView(ASPxGridViewEpsRelacionados);
                    //ds.Tables[0] = EpsAsociadosDataTableCache;
                }

                //con el numero de contrato buscar el rubro relacionado
                var datosRubro = from b in contexto.CON_CONTRATACION_FIN_ACCION_EPEs
                                 join c in contexto.FIN_ACCION_EPEs on b.FAE_ID equals c.FAE_ID
                                 join d in contexto.SIG_ACCIONs on c.ACC_ID equals d.ACC_ID
                                 where b.CTT_ID == Convert.ToDecimal(StrCttId)
                                 select new
                                 {
                                     d.PLN_ID
                                 };

                foreach (var v in datosRubro)
                {
                    StrPlnId = v.PLN_ID.ToString();
                }



            }
        }
        catch (Exception ex)
        {

            lblMensaje.Text = ex.Message.ToString();
        }
    }

    #region CargarDatosContratoPapa
    private void CargarDatosContratoPapa()
    {
        try
        {
            
            object valuesLocal = ASPxGridViewContratos.GetRowValues(ASPxGridViewContratos.FocusedRowIndex, new string[] { "CTT_ID" });


            if (valuesLocal != null)
            {
                Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
                //ASPxGridViewEpsRelacionados 
                if (StrCttId == "")
                    StrCttId = valuesLocal.ToString();

                var datos = from a in contexto.CON_CONTRATACIONs
                            where a.CTT_ID == Convert.ToDecimal(StrCttId)
                            select a;
                foreach (var v in datos)
                {
                    StrCttId = v.CTT_ID.ToString();
                    CTT_NUMERO_CONTRATO.Text = v.CTT_NUMERO_CONTRATO;
                    if (v.CTT_FECHA_SUSCRIPCION != null)
                        CTT_FECHA_SUSCRIPCION.Text = Convert.ToDateTime(v.CTT_FECHA_SUSCRIPCION).ToShortDateString(); //v.CTT_FECHA_SUSCRIPCION.ToString();
                    if (v.TMS_ID != null)
                        TMS_ID.Value = v.TMS_ID.ToString();
                    if (v.CTC_ID != null)
                        CTC_ID.Value = v.CTC_ID.ToString();
                    //DateTime objFechaInicio = 
                    if (v.CTT_FECHA_INICIO != null)
                        CTT_FECHA_INICIO.Text = Convert.ToDateTime(v.CTT_FECHA_INICIO).ToShortDateString();  //v.CTT_FECHA_INICIO.ToString();
                    if (v.CTT_FECHA_TERMINACION != null)
                        CTT_FECHA_TERMINACION.Text = Convert.ToDateTime(v.CTT_FECHA_TERMINACION.ToString()).ToShortDateString();
                    if (v.CTT_FECHA_LIQUIDACION != null)
                        CTT_FECHA_LIQUIDACION.Text = Convert.ToDateTime(v.CTT_FECHA_LIQUIDACION.ToString()).ToShortDateString();
                    if (v.CTT_FECHA_SOLICITUD != null)
                        CTT_FECHA_SOLICITUD.Text = Convert.ToDateTime(v.CTT_FECHA_SOLICITUD.ToString()).ToShortDateString();
                    //CTT_FECHA_TERMINACION_FINAL.Text = v.CTT_FECHA_TERMINACION_FINAL.ToString();

                    if (v.CTT_VALOR_CONTRATO != null)
                    {
                        lblCTT_VALOR_CONTRATO.Text = Convert.ToDecimal(v.CTT_VALOR_CONTRATO).ToString("C");
                        CTT_VALOR_CONTRATO.Text = v.CTT_VALOR_CONTRATO.ToString();
                    }

                    if (v.CTT_INCLUYE_IVA != null)
                    {
                        if (v.CTT_INCLUYE_IVA == "1")
                            CTT_INCLUYE_IVA.Checked = true;
                        else if (v.CTT_INCLUYE_IVA == "0")
                            CTT_INCLUYE_IVA.Checked = false;
                    }


                    if (v.CTT_VALOR_CONTRATO_MENSUAL != null)
                    {
                        lblCTT_VALOR_CONTRATO_MENSUAL.Text = Convert.ToDecimal(v.CTT_VALOR_CONTRATO_MENSUAL).ToString("C");
                        CTT_VALOR_CONTRATO_MENSUAL.Text = v.CTT_VALOR_CONTRATO_MENSUAL.ToString();
                    }

                    if (v.CLI_VALOR_FINAL_CONTRATO != null)
                    {
                        lblCLI_VALOR_FINAL_CONTRATO.Text = Convert.ToDecimal(v.CLI_VALOR_FINAL_CONTRATO).ToString("C");
                        CLI_VALOR_FINAL_CONTRATO.Text = v.CLI_VALOR_FINAL_CONTRATO.ToString();
                    }
                    //CTT_OBJETO.Text = v.CTT_OBJETO;

                    ////////////////////////////////////
                    // carga la forma de pago objeto plazo y obligaciones
                    ///////////////////////////////////
                    var datosEP = from d in contexto.CON_CONTRATACION_FIN_ACCION_EPEs
                                  join b in contexto.FIN_ACCION_EPEs on d.FAE_ID equals b.FAE_ID
                                  join c in contexto.CON_CONTRATOs on b.FAE_ID equals c.FAE_ID
                                  where d.CTT_ID == Convert.ToDecimal(StrCttId)
                                  select new
                                  {
                                      c.CON_FORMA_PAGO,
                                      b.FAE_OBJETO,
                                      b.FAE_PLAZO_EJECUCION,
                                      c.CON_OBLIGACIONES_CONTRATISTA
                                  };
                    foreach (var e in datosEP)
                    {
                        CTT_FORMA_PAGO.Text = e.CON_FORMA_PAGO;
                        CTT_OBJETO.Text = e.FAE_OBJETO;
                        //CTT_PLAZO.Text = e.FAE_PLAZO_EJECUCION;
                       // CTT_OBLIGACIONES.Text = e.CON_OBLIGACIONES_CONTRATISTA;
                    }

                    CTT_NUMERO_REGISTRO.Text = v.CTT_NUMERO_REGISTRO.ToString();
                    if (v.CLI_OBSERVACIONES != null)
                        CLI_OBSERVACIONES.Text = v.CLI_OBSERVACIONES.ToString();
                    if (v.CTL_ID != null)
                        CTL_ID.Value = v.CTL_ID.ToString();
                    CTT_ANO.Text = v.CTT_ANO;
                    if (v.CTT_FECHA_APROBACION_POLIZA != null)
                        CTT_FECHA_APROBACION_POLIZA.Text = Convert.ToDateTime(v.CTT_FECHA_APROBACION_POLIZA.ToString()).ToShortDateString();

                    //DIAS
                    CTT_DIAS_TOTAL_DURACION_CONTRATO.Text = v.CTT_DIAS_TOTAL_DURACION_CONTRATO.ToString();
                    CTT_DIAS_PRORROGA.Text = v.CTT_DIAS_PRORROGA.ToString();
                    CTT_DIAS_SUSPENSIONES.Text = v.CTT_DIAS_SUSPENSIONES.ToString();
                    CTT_FECHA_TERMINACION_FINAL.Text = v.CTT_FECHA_TERMINACION_FINAL.ToString();

                    CTT_OBLIGACIONES.Text = v.CTT_OBLIGACIONES;
                    CTT_PLAZO.Text = v.CTT_PLAZO;

                    #region Carga Departamento y Municipio
                    if (!String.IsNullOrEmpty(v.ZON_ID))
                    {
                        string strDep = v.ZON_ID.Substring(0, 2);

                        ddlDepartamentoEjecucionContrato.Value = strDep;

                        var datosZonas = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                                         where object.Equals(a.ZON_PADRE_ID, strDep)
                                         select a;
                        if (datosZonas != null)
                        {
                            ddlMunicipioEjecucionContrato.DataSource = datosZonas;
                            ddlMunicipioEjecucionContrato.TextField = "ZON_NOMBRE";
                            ddlMunicipioEjecucionContrato.ValueField = "ZON_ID";
                            ddlMunicipioEjecucionContrato.DataBind();
                            ddlMunicipioEjecucionContrato.Value = v.ZON_ID;
                        }
                    }
                    #endregion

                    //SIPERVISORES
                    if (v.ASU_ID_EXTERNO != null)
                        ASU_ID_EXTERNO.Value = v.ASU_ID_EXTERNO.ToString();
                    if (v.ASU_ID_INTERNO != null)
                        ASU_ID_INTERNO.Value = v.ASU_ID_INTERNO.ToString();

                    cargarPLazoContrato();

                    if (v.TPE_ID != null)
                        verificarPermisosBotones(Convert.ToInt32(v.TPE_ID));


                }


                bindEpesAsociados();
                //ENTRA A EDICION CARGA LOS DATOS DEL REPORTE
                //msgBox1.alert("debe seleccionar al menos un contrato");

            }

        }
        catch (Exception ex)
        {

            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region BindDatoscontratos
    private void BindDatoscontratos()
    {

        try
        {




            if (StrCcoId != "")
            {
                Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
                var datos = from a in contexto.CON_CONTRATACIONs
                            where a.CCO_ID == Convert.ToDecimal(StrCcoId)

                            select new
                            {
                                a.CTT_ID,
                                a.CTT_NUMERO_CONTRATO,
                                a.CTT_FECHA_INICIO,// = a.CTT_FECHA_INICIO == null ? "01/01/1999" : Convert.ToDateTime(a.CTT_FECHA_INICIO).ToShortDateString(),
                                a.CTT_FECHA_TERMINACION,// = a.CTT_FECHA_TERMINACION == null ? "01/01/1999" : Convert.ToDateTime(a.CTT_FECHA_TERMINACION).ToShortDateString(),
                                a.CTT_VALOR_CONTRATO,
                                a.CTT_ANO
                            };

                //foreach (var v in datos)
                //{
                //    StrCttId = v.CTT_ID.ToString();
                //    break;
                //}
                if (datos == null) return;
                ASPxGridViewContratos.BeginUpdate();
                ASPxGridViewContratos.DataSource = datos;// objProductosComercialesRendimientosData.DefaultView;
                ASPxGridViewContratos.DataBind();
                ASPxGridViewContratos.EndUpdate();
                contratosDataTableCache = GetDataView(ASPxGridViewContratos);
            }


        }
        catch (Exception ex)
        {
            ex.Message.ToString();
            //throw;
        }
    }
    #endregion

    #region cargarModalidadSeleccion
    private void cargarModalidadSeleccion()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.TIPO_MODALIDAD_SELECCIONs

                        select a;
            if (datos == null) return;
            TMS_ID.DataSource = datos;
            TMS_ID.TextField = "TMS_NOMBRE";
            TMS_ID.ValueField = "TMS_ID";
            TMS_ID.DataBind();
            //TMS_ID.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region cargarSupervisores
    private void cargarSupervisores()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.ADM_SUPERVISOREs

                        select a;
            if (datos == null) return;
            ASU_ID_EXTERNO.DataSource = datos;
            ASU_ID_EXTERNO.TextField = "ASU_NOMBRE";
            ASU_ID_EXTERNO.ValueField = "ASU_ID";
            ASU_ID_EXTERNO.DataBind();


            if (datos == null) return;
            ASU_ID_INTERNO.DataSource = datos;
            ASU_ID_INTERNO.TextField = "ASU_NOMBRE";
            ASU_ID_INTERNO.ValueField = "ASU_ID";
            ASU_ID_INTERNO.DataBind();

            //TMS_ID.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region cargarTipoLiquidacion
    private void cargarTipoLiquidacion()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.CON_TIPO_LIQUIDACIONs

                        select a;
            if (datos == null) return;
            CTL_ID.DataSource = datos;
            CTL_ID.TextField = "CTL_NOMBRE";
            CTL_ID.ValueField = "CTL_ID";
            CTL_ID.DataBind();
            //TMS_ID.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region cargarTipoContratos
    private void cargarTipoContratos()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.CON_TIPO_CONTRATOs

                        select a;
            if (datos == null) return;
            CTC_ID.DataSource = datos;
            CTC_ID.TextField = "CTC_NOMBRE";
            CTC_ID.ValueField = "CTC_ID";
            CTC_ID.DataBind();
            //TMS_ID.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region cargarPLazoContrato

    private void cargarPLazoContrato()
    {
        if (CTT_FECHA_TERMINACION.Text != "" &&
            CTT_FECHA_INICIO.Text != "" &&
                CTT_DIAS_PRORROGA.Text != "" &&
                    CTT_DIAS_SUSPENSIONES.Text != "")
        {
            long longFechaTerminacion = Convert.ToDateTime(CTT_FECHA_TERMINACION.Text).Ticks;
            long longFechaInicio = Convert.ToDateTime(CTT_FECHA_INICIO.Text).Ticks;
            long fechaPlazo = longFechaTerminacion - longFechaInicio;

            long longDias = (((fechaPlazo / 10000000) / 60) / 60) / 24;
            //DateTime obj = new DateTime(fechaPlazo);

            CTT_DIAS_TOTAL_DURACION_CONTRATO.Text = (longDias + 1 + Convert.ToInt32(CTT_DIAS_PRORROGA.Text) + Convert.ToInt32(CTT_DIAS_SUSPENSIONES.Text)).ToString();
            //txtPlazo.AutoUpdateAfterCallBack = true;


            CTT_FECHA_TERMINACION_FINAL.Text = Convert.ToDateTime(CTT_FECHA_INICIO.Text).AddDays(Convert.ToDouble(CTT_DIAS_TOTAL_DURACION_CONTRATO.Text)).ToShortDateString();
        }
    }

    #endregion

    #region CTT_DIAS_PRORROGA_TextChanged
    protected void CTT_DIAS_PRORROGA_TextChanged(object sender, EventArgs e)
    {
        cargarPLazoContrato();
    }
    #endregion

    #region Reportes
    protected void btnReporteTerminosReferencia_Click(object sender, ImageClickEventArgs e)
    {
        Session["CTT_ID"] = StrCttId;
        //this.crearContextItems();
        System.Text.StringBuilder l_msg = new System.Text.StringBuilder();
        //TODO: Revisar esta impresión.
        l_msg.Append(@"<script language=javascript>");
        l_msg.Append(@"window.open('ReporteTerminosReferencia.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
        Response.Write(l_msg.ToString());
    }
    protected void btnReporteSolicitudContrato_Click(object sender, ImageClickEventArgs e)
    {
        Session["CTT_ID"] = StrCttId;
        //this.crearContextItems();
        System.Text.StringBuilder l_msg = new System.Text.StringBuilder();




        //TODO: Revisar esta impresión.
        l_msg.Append(@"<script language=javascript>");
        l_msg.Append(@"window.open('ReporteSolicitudContrato.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");


        Response.Write(l_msg.ToString());




    }
    protected void btnContratoPrestacionServicios_Click(object sender, ImageClickEventArgs e)
    {


        Session["CTT_ID"] = StrCttId;
        //this.crearContextItems();


        System.Text.StringBuilder l_msg = new System.Text.StringBuilder();

        string strAdministradores = ConfigurationManager.AppSettings["OtrasEntidades"].ToString();
        string[] strArregloAdministradores = strAdministradores.Split(',');
        bool boolBandera = false;

        foreach (string var in strArregloAdministradores)
        {
            // es administrador mostrar todos
            if (var == StrPlnId)
            {
                boolBandera = true;
                break;
            }
        }


        if (boolBandera)
        {
            //TODO: Revisar esta impresión.
            l_msg.Append(@"<script language=javascript>");
            l_msg.Append(@"window.open('ReportePrestacionServiciosEscuelaTaller.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
        }
        else
        {
            //TODO: Revisar esta impresión.
            l_msg.Append(@"<script language=javascript>");
            l_msg.Append(@"window.open('ReportePrestacionServicios.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
       
        }

        Response.Write(l_msg.ToString());
    }
    protected void btnIdoneidadContratista_Click(object sender, ImageClickEventArgs e)
    {
        Session["CTT_ID"] = StrCttId;
        //this.crearContextItems();
        System.Text.StringBuilder l_msg = new System.Text.StringBuilder();

         string strAdministradores = ConfigurationManager.AppSettings["OtrasEntidades"].ToString();
        string[] strArregloAdministradores = strAdministradores.Split(',');
        bool boolBandera = false;

        foreach (string var in strArregloAdministradores)
        {
            // es administrador mostrar todos
            if (var == StrPlnId)
            {
                boolBandera = true;
                break;
            }
        }


        if (boolBandera)
        {
            //TODO: Revisar esta impresión.
            l_msg.Append(@"<script language=javascript>");
            l_msg.Append(@"window.open('ReporteIdoneidadContratistaEscuelaTaller.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
       
        }
        else
        {
            //TODO: Revisar esta impresión.
            l_msg.Append(@"<script language=javascript>");
            l_msg.Append(@"window.open('ReporteIdoneidadContratista.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
       
        }
         Response.Write(l_msg.ToString());
    }
    protected void btnPresentacionPropuesta_Click(object sender, ImageClickEventArgs e)
    {
        Session["CTT_ID"] = StrCttId;
        //this.crearContextItems();
        System.Text.StringBuilder l_msg = new System.Text.StringBuilder();
        //TODO: Revisar esta impresión.
        l_msg.Append(@"<script language=javascript>");
        l_msg.Append(@"window.open('ReportePresentaciónPropuesta.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
        Response.Write(l_msg.ToString());
    }

    protected void btnReporteContratoInterventoria_Click(object sender, ImageClickEventArgs e)
    {
        Session["CTT_ID"] = StrCttId;
        //this.crearContextItems();
        System.Text.StringBuilder l_msg = new System.Text.StringBuilder();
        //TODO: Revisar esta impresión.
        l_msg.Append(@"<script language=javascript>");
        l_msg.Append(@"window.open('ReporteContratoInterventoria.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
        Response.Write(l_msg.ToString());
    }

    protected void btnReporteContratoObra_Click(object sender, ImageClickEventArgs e)
    {
        Session["CTT_ID"] = StrCttId;
        //this.crearContextItems();
        System.Text.StringBuilder l_msg = new System.Text.StringBuilder();
        //TODO: Revisar esta impresión.
        l_msg.Append(@"<script language=javascript>");
        l_msg.Append(@"window.open('ReporteContratoObra.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
        Response.Write(l_msg.ToString());
    }


    #endregion

    #region ddlDepartamentoEjecucionContrato_SelectedIndexChanged
    protected void ddlDepartamentoEjecucionContrato_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlDepartamentoEjecucionContrato.Value.ToString() == "") return;
        if (ddlDepartamentoEjecucionContrato.Value.ToString() == "0")
        {
            ddlMunicipio.Items.Clear();
            return;
        }

        ddlMunicipioEjecucionContrato.Items.Clear();
        Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
        var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                    where object.Equals(a.ZON_PADRE_ID, ddlDepartamentoEjecucionContrato.Value)
                    select a;
        if (datos == null) return;
        ddlMunicipioEjecucionContrato.DataSource = datos;
        ddlMunicipioEjecucionContrato.TextField = "ZON_NOMBRE";
        ddlMunicipioEjecucionContrato.ValueField = "ZON_ID";
        ddlMunicipioEjecucionContrato.DataBind();
    }
    #endregion

    private void guardarContratista()
    {
        try
        {
            //CONTRATISTA

            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            if (StrCcoId == "")
            {
                Model.CON_CONTRATISTA v = new Model.CON_CONTRATISTA();
                aspxFileManagerContratista.Visible = true;
                //ADICIONAR CON_CONTRATISTA
                v.CCO_IDENTIFICACION = CCO_IDENTIFICACION.Text;
                ApplyFileManagerSettings(true);
                string strRuta = Server.MapPath("Archivos");
                if (!(Directory.Exists(strRuta + @"\" + v.CCO_IDENTIFICACION + @"\Contratista\")))
                {
                    Directory.CreateDirectory(strRuta + @"\" + v.CCO_IDENTIFICACION + @"\Contratista\");
                }
                aspxFileManagerContratista.Settings.RootFolder = @"~\Archivos\" + v.CCO_IDENTIFICACION + @"\Contratista\";
                aspxFileManagerContratista.Settings.InitialFolder = @"~\Archivos\" + v.CCO_IDENTIFICACION;
                aspxFileManagerContratista.Settings.ThumbnailFolder = @"~\Archivos\" + v.CCO_IDENTIFICACION;
                v.CCO_NOMBRE = CCO_NOMBRE.Text;
                lblNombreContratisa.Text = v.CCO_NOMBRE;
                v.CCO_DIRECCION = CCO_DIRECCION.Text;
                v.CCO_COREO_ELECTRONICO = CCO_COREO_ELECTRONICO.Text;
                v.CCO_TELEFONO_CELULAR = CCO_TELEFONO_CELULAR.Text;
                v.DOC_ID = Convert.ToDecimal(rblDocumentos.Value);
                v.CCO_PROFESION = CCO_PROFESION.Text;
                v.TNJ_ID_NATURALEZA_JURIDICA = Convert.ToDecimal(ddlTNJ_ID_NATURALEZA_JURIDICA.Value.ToString());
                v.ZON_ID = ddlMunicipio.Value.ToString();
                if (ddlTNJ_ID_NATURALEZA_JURIDICA.Value.ToString() != "25")
                {
                    //carga los datos de Representante
                    v.CCO_NOMBRE_REPRESENTANTE_LEGAL = CCO_NOMBRE_REPRESENTANTE_LEGAL.Text;
                    if (DOC_ID_REPRESENTANTE.Value != null)
                        v.DOC_ID_REPRESENTANTE = Convert.ToDecimal(DOC_ID_REPRESENTANTE.Value.ToString());
                    v.CCO_NUM_IDENTIFICACION_REPRESENTANTE = CCO_NUM_IDENTIFICACION_REPRESENTANTE.Text;
                    v.CCO_TELEFONO_FIJO = CCO_TELEFONO_FIJO.Text;
                    v.ZON_ID_REPRESENTANTE = ddlMunicipioRepresentante.Value.ToString();
                }
                contexto.CON_CONTRATISTAs.InsertOnSubmit(v);
                contexto.SubmitChanges();
                StrCcoId = v.CCO_ID.ToString();
            }
            else
            {
                var datos = (from a in contexto.CON_CONTRATISTAs
                             where a.CCO_ID == Convert.ToDecimal(StrCcoId)
                             select a
                                 );
                foreach (var v in datos)
                {

                    aspxFileManagerContratista.Visible = true;
                    //ACTUALIZA CON_CONTRATISTA
                    v.CCO_IDENTIFICACION = CCO_IDENTIFICACION.Text;
                    ApplyFileManagerSettings(true);
                    string strRuta = Server.MapPath("Archivos");
                    if (!(Directory.Exists(strRuta + @"\" + v.CCO_IDENTIFICACION + @"\Contratista\")))
                    {
                        Directory.CreateDirectory(strRuta + @"\" + v.CCO_IDENTIFICACION + @"\Contratista\");
                    }
                    aspxFileManagerContratista.Settings.RootFolder = @"~\Archivos\" + v.CCO_IDENTIFICACION + @"\Contratista\";
                    aspxFileManagerContratista.Settings.InitialFolder = @"~\Archivos\" + v.CCO_IDENTIFICACION;
                    aspxFileManagerContratista.Settings.ThumbnailFolder = @"~\Archivos\" + v.CCO_IDENTIFICACION;
                    v.CCO_NOMBRE = CCO_NOMBRE.Text;
                    lblNombreContratisa.Text = v.CCO_NOMBRE;
                    v.CCO_DIRECCION = CCO_DIRECCION.Text;
                    v.CCO_COREO_ELECTRONICO = CCO_COREO_ELECTRONICO.Text;
                    v.CCO_TELEFONO_CELULAR = CCO_TELEFONO_CELULAR.Text;
                    v.DOC_ID = Convert.ToDecimal(rblDocumentos.Value);
                    v.CCO_PROFESION = CCO_PROFESION.Text;
                    v.TNJ_ID_NATURALEZA_JURIDICA = Convert.ToDecimal(ddlTNJ_ID_NATURALEZA_JURIDICA.Value.ToString());
                    v.ZON_ID = ddlMunicipio.Value.ToString();
                    if (ddlTNJ_ID_NATURALEZA_JURIDICA.Value.ToString() != "25")
                    {
                        //carga los datos de Representante
                        v.CCO_NOMBRE_REPRESENTANTE_LEGAL = CCO_NOMBRE_REPRESENTANTE_LEGAL.Text;
                        if (DOC_ID_REPRESENTANTE.Value != null)
                            v.DOC_ID_REPRESENTANTE = Convert.ToDecimal(DOC_ID_REPRESENTANTE.Value.ToString());
                        v.CCO_NUM_IDENTIFICACION_REPRESENTANTE = CCO_NUM_IDENTIFICACION_REPRESENTANTE.Text;
                        v.CCO_TELEFONO_FIJO = CCO_TELEFONO_FIJO.Text;
                        v.ZON_ID_REPRESENTANTE = ddlMunicipioRepresentante.Value.ToString();
                    }
                }
                contexto.SubmitChanges();
            }

            msgBox1.alert("La Información se Guardo Exitosamente!!");



        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }

    #region btnGuardarContratista_Click
    protected void btnGuardarContratista_Click(object sender, EventArgs e)
    {

        guardarContratista();
    }
    #endregion

    #region adicionar
    private void adicionar()
    {
        try
        {
            //CONTRATOS
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            if (StrCttId == "")
            {
                verificarPermisosBotones(0);
                Model.CON_CONTRATACION v = new Model.CON_CONTRATACION();
                if (CTT_NUMERO_CONTRATO.Text != "")
                    v.CTT_NUMERO_CONTRATO = CTT_NUMERO_CONTRATO.Text;
                if (CTT_FECHA_SUSCRIPCION.Text != "")
                    v.CTT_FECHA_SUSCRIPCION = Convert.ToDateTime(CTT_FECHA_SUSCRIPCION.Text);
                if (TMS_ID.Value != null)
                    v.TMS_ID = Convert.ToDecimal(TMS_ID.Value);
                if (CTC_ID.Value != null)
                    v.CTC_ID = Convert.ToDecimal(CTC_ID.Value);
                //DateTime objFechaInicio = 
                if (CTT_FECHA_INICIO.Text != "")
                    v.CTT_FECHA_INICIO = Convert.ToDateTime(CTT_FECHA_INICIO.Text);
                if (CTT_FECHA_TERMINACION.Text != "")
                    v.CTT_FECHA_TERMINACION = Convert.ToDateTime(CTT_FECHA_TERMINACION.Text);
                if (CTT_FECHA_LIQUIDACION.Text != "")
                    v.CTT_FECHA_LIQUIDACION = Convert.ToDateTime(CTT_FECHA_LIQUIDACION.Text);
                if (CTT_FECHA_SOLICITUD.Text != "")
                    v.CTT_FECHA_SOLICITUD = Convert.ToDateTime(CTT_FECHA_SOLICITUD.Text);

                v.CCO_ID = Convert.ToDecimal(StrCcoId);
                if (CTT_VALOR_CONTRATO.Text != "")
                {
                    v.CTT_VALOR_CONTRATO = Convert.ToDecimal(CTT_VALOR_CONTRATO.Text);
                }


                if (CTT_INCLUYE_IVA.Checked)
                {
                    v.CTT_INCLUYE_IVA = "1";
                }
                else
                    v.CTT_INCLUYE_IVA = "0";



                if (CTT_VALOR_CONTRATO_MENSUAL.Text != "")
                {
                    v.CTT_VALOR_CONTRATO_MENSUAL = Convert.ToDecimal(CTT_VALOR_CONTRATO_MENSUAL.Text);
                }

                if (CLI_VALOR_FINAL_CONTRATO.Text != "")
                {
                    v.CLI_VALOR_FINAL_CONTRATO = Convert.ToDecimal(CLI_VALOR_FINAL_CONTRATO.Text);
                }
                if (CTT_OBJETO.Text != "")
                    v.CTT_OBJETO = CTT_OBJETO.Text;
                if (CTT_PLAZO.Text != "")
                    v.CTT_PLAZO = CTT_PLAZO.Text;
                if (CTT_OBLIGACIONES.Text != "")
                    v.CTT_OBLIGACIONES = CTT_OBLIGACIONES.Text;

                if (CTT_NUMERO_REGISTRO.Text != "")
                    v.CTT_NUMERO_REGISTRO = Convert.ToDecimal(CTT_NUMERO_REGISTRO.Text);

                if (CLI_OBSERVACIONES.Text != "")
                    v.CLI_OBSERVACIONES = CLI_OBSERVACIONES.Text;

                if (CTL_ID.Value != null && CTL_ID.Value != "")
                    v.CTL_ID = Convert.ToDecimal(CTL_ID.Value);
                if (CTT_ANO.Text != "")
                    v.CTT_ANO = CTT_ANO.Text;

                if (CTT_FECHA_APROBACION_POLIZA.Text != "")
                    v.CTT_FECHA_APROBACION_POLIZA = Convert.ToDateTime(CTT_FECHA_APROBACION_POLIZA.Text);

                //DIAS
                if (CTT_DIAS_TOTAL_DURACION_CONTRATO.Text != "")
                    v.CTT_DIAS_TOTAL_DURACION_CONTRATO = Convert.ToDecimal(CTT_DIAS_TOTAL_DURACION_CONTRATO.Text);

                if (CTT_DIAS_PRORROGA.Text != "")
                    v.CTT_DIAS_PRORROGA = Convert.ToDecimal(CTT_DIAS_PRORROGA.Text);

                if (CTT_DIAS_SUSPENSIONES.Text != "")
                    v.CTT_DIAS_SUSPENSIONES = Convert.ToDecimal(CTT_DIAS_SUSPENSIONES.Text);

                if (CTT_FECHA_TERMINACION_FINAL.Text != "")
                    v.CTT_FECHA_TERMINACION_FINAL = Convert.ToDateTime(CTT_FECHA_TERMINACION_FINAL.Text);

                //  if (ddlMunicipioEjecucionContrato.Value != null && ddlMunicipioEjecucionContrato.Value.ToString() != "")
                //     v.ZON_ID = ddlMunicipioEjecucionContrato.Value.ToString();
                v.AOG_ID = Convert.ToDecimal(ConfigurationManager.AppSettings["AOG_ID"].ToString());

                //SIPERVISORES
                if (ASU_ID_EXTERNO.Value != null)
                    v.ASU_ID_EXTERNO = Convert.ToDecimal(ASU_ID_EXTERNO.Value);

                if (ASU_ID_INTERNO.Value != null)
                    v.ASU_ID_INTERNO = Convert.ToDecimal(ASU_ID_INTERNO.Value);
                v.TPE_ID = 0;
                contexto.CON_CONTRATACIONs.InsertOnSubmit(v);
                contexto.SubmitChanges();

                StrCttId = v.CTT_ID.ToString();
                BindDatoscontratos();
            }
            else
            {

                var datos = from a in contexto.CON_CONTRATACIONs
                            where a.CTT_ID == Convert.ToDecimal(StrCttId.ToString())
                            select a;
                foreach (var v in datos)
                {

                    v.CTT_NUMERO_CONTRATO = CTT_NUMERO_CONTRATO.Text;
                    if (CTT_FECHA_SUSCRIPCION.Text != "")
                        v.CTT_FECHA_SUSCRIPCION = Convert.ToDateTime(CTT_FECHA_SUSCRIPCION.Text);
                    if (TMS_ID.Value != null)
                        v.TMS_ID = Convert.ToDecimal(TMS_ID.Value);
                    if (CTC_ID.Value != null)
                        v.CTC_ID = Convert.ToDecimal(CTC_ID.Value);
                    //DateTime objFechaInicio = 
                    if (CTT_FECHA_INICIO.Text != "")
                        v.CTT_FECHA_INICIO = Convert.ToDateTime(CTT_FECHA_INICIO.Text);
                    if (CTT_FECHA_TERMINACION.Text != "")
                        v.CTT_FECHA_TERMINACION = Convert.ToDateTime(CTT_FECHA_TERMINACION.Text);
                    if (CTT_FECHA_LIQUIDACION.Text != "")
                        v.CTT_FECHA_LIQUIDACION = Convert.ToDateTime(CTT_FECHA_LIQUIDACION.Text);
                    if (CTT_FECHA_SOLICITUD.Text != "")
                        v.CTT_FECHA_SOLICITUD = Convert.ToDateTime(CTT_FECHA_SOLICITUD.Text);


                    if (CTT_VALOR_CONTRATO.Text != "")
                    {
                        v.CTT_VALOR_CONTRATO = Convert.ToDecimal(CTT_VALOR_CONTRATO.Text);
                    }

                    if (CTT_INCLUYE_IVA.Checked)
                    {
                        v.CTT_INCLUYE_IVA = "1";
                    }
                    else
                        v.CTT_INCLUYE_IVA = "0";


                    if (CTT_VALOR_CONTRATO_MENSUAL.Text != "")
                    {
                        v.CTT_VALOR_CONTRATO_MENSUAL = Convert.ToDecimal(CTT_VALOR_CONTRATO_MENSUAL.Text);
                    }

                    if (CLI_VALOR_FINAL_CONTRATO.Text != "")
                    {
                        v.CLI_VALOR_FINAL_CONTRATO = Convert.ToDecimal(CLI_VALOR_FINAL_CONTRATO.Text);
                    }
                    v.CTT_OBJETO = CTT_OBJETO.Text;
                    v.CTT_PLAZO = CTT_PLAZO.Text;
                    v.CTT_OBLIGACIONES = CTT_OBLIGACIONES.Text;
                    if (CTT_NUMERO_REGISTRO.Text != "")
                        v.CTT_NUMERO_REGISTRO = Convert.ToDecimal(CTT_NUMERO_REGISTRO.Text);
                    if (CLI_OBSERVACIONES.Text != "")
                        v.CLI_OBSERVACIONES = CLI_OBSERVACIONES.Text;
                    if (CTL_ID.Value != null)
                        v.CTL_ID = Convert.ToDecimal(CTL_ID.Value);
                    v.CTT_ANO = CTT_ANO.Text;
                    if (CTT_FECHA_APROBACION_POLIZA.Text != "")
                        v.CTT_FECHA_APROBACION_POLIZA = Convert.ToDateTime(CTT_FECHA_APROBACION_POLIZA.Text);

                    //DIAS
                    v.CTT_DIAS_TOTAL_DURACION_CONTRATO = Convert.ToDecimal(CTT_DIAS_TOTAL_DURACION_CONTRATO.Text);
                    v.CTT_DIAS_PRORROGA = Convert.ToDecimal(CTT_DIAS_PRORROGA.Text);
                    v.CTT_DIAS_SUSPENSIONES = Convert.ToDecimal(CTT_DIAS_SUSPENSIONES.Text);
                    if (CTT_FECHA_TERMINACION_FINAL.Text != "")
                        v.CTT_FECHA_TERMINACION_FINAL = Convert.ToDateTime(CTT_FECHA_TERMINACION_FINAL.Text);

                    //   if (!String.IsNullOrEmpty( ddlMunicipioEjecucionContrato.Value.ToString()))
                    //   v.ZON_ID = ddlMunicipioEjecucionContrato.Value.ToString();


                    //SIPERVISORES
                    if (ASU_ID_EXTERNO.Value != null)
                        v.ASU_ID_EXTERNO = Convert.ToDecimal(ASU_ID_EXTERNO.Value);
                    if (ASU_ID_INTERNO.Value != null)
                        v.ASU_ID_INTERNO = Convert.ToDecimal(ASU_ID_INTERNO.Value);
                }

                contexto.SubmitChanges();
            }

            msgBox1.alert("La Información se Guardo Exitosamente!!");



        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region btnGuardarContratos_Click
    protected void btnGuardarContratos_Click(object sender, EventArgs e)
    {
        adicionar();
    }
    #endregion

    #region CTT_DIAS_SUSPENSIONES_TextChanged
    protected void CTT_DIAS_SUSPENSIONES_TextChanged(object sender, EventArgs e)
    {
        cargarPLazoContrato();
    }
    #endregion

    #region CTT_DIAS_TOTAL_DURACION_CONTRATO_TextChanged
    protected void CTT_DIAS_TOTAL_DURACION_CONTRATO_TextChanged(object sender, EventArgs e)
    {
        cargarPLazoContrato();
    }
    #endregion

    #region btnAsociarEp_Click
    protected void btnAsociarEp_Click(object sender, EventArgs e)
    {
        try
        {
            adicionar();

            if (StrCttId != "")
            {
                object values = ASPxGridViewEpsDisponibles.GetRowValues(ASPxGridViewEpsDisponibles.FocusedRowIndex, new string[] { "FAE_ID" });
                if (values != null)
                {
                    Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);

                    //PRIMERO ES CONSULTAR SI EXISTE EL FAE EN LA TABLA CON_CONTRATACION_FIN_ACCION_EPEs

                    var datosContratacionFinAccion = from a in contexto.CON_CONTRATACION_FIN_ACCION_EPEs
                                                     where a.FAE_ID == Convert.ToDecimal(values.ToString())
                                                     select a;

                    bool boolBandera = false;
                    foreach (var v in datosContratacionFinAccion)
                    {
                        boolBandera = true;
                        v.CTT_ID = Convert.ToDecimal(StrCttId);
                    }

                    if (!boolBandera)
                    {
                        Model.CON_CONTRATACION_FIN_ACCION_EPE obj = new Model.CON_CONTRATACION_FIN_ACCION_EPE();
                        obj.CTT_ID = Convert.ToDecimal(StrCttId);
                        obj.CTT_VALOR_CONTRATO = 0;
                        obj.CTT_VALOR_OBLIGACION = 0;
                        obj.FAE_ID = Convert.ToDecimal(values.ToString());
                        contexto.CON_CONTRATACION_FIN_ACCION_EPEs.InsertOnSubmit(obj);
                    }

                    contexto.SubmitChanges();



                    if (StrCttId != "")
                    {
                        //object values = ASPxGridViewEpsDisponibles.GetRowValues(ASPxGridViewEpsDisponibles.FocusedRowIndex, new string[] { "FAE_ID" });
                        if (values != null)
                        {
                            //Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
                            var datosContratacionFinAccionCargaCajas = from a in contexto.FIN_ACCION_EPEs
                                                                       join b in contexto.CON_CONTRATOs on a.FAE_ID equals b.FAE_ID
                                                                       where a.FAE_ID == Convert.ToDecimal(values.ToString())
                                                                       select new
                                                                       {
                                                                           b.CON_FORMA_PAGO,
                                                                           a.FAE_OBJETO,
                                                                           a.FAE_VALOR_CDP,
                                                                           a.FAE_PLAZO_EJECUCION,
                                                                           b.CON_OBLIGACIONES_CONTRATISTA
                                                                       };

                            foreach (var y in datosContratacionFinAccionCargaCajas)
                            {
                                CTT_OBLIGACIONES.Text = y.CON_OBLIGACIONES_CONTRATISTA;
                                CTT_PLAZO.Text = y.FAE_PLAZO_EJECUCION;
                                CTT_OBJETO.Text = y.FAE_OBJETO;
                                CTT_FORMA_PAGO.Text = y.CON_FORMA_PAGO;
                                CTT_VALOR_CONTRATO.Text = y.FAE_VALOR_CDP.ToString();
                                if (y.FAE_VALOR_CDP != null)
                                    lblCTT_VALOR_CONTRATO.Text = Convert.ToDecimal(y.FAE_VALOR_CDP).ToString("C");


                            }

                            var datosContratista = from a in contexto.CON_CONTRATACIONs
                                                   where a.CCO_ID == Convert.ToDecimal(StrCcoId) && a.CTT_ID == Convert.ToDecimal(StrCttId)
                                                   select a;
                            foreach (var g in datosContratista)
                            {
                                g.CTT_VALOR_CONTRATO = Convert.ToDecimal(CTT_VALOR_CONTRATO.Text);
                                g.CTT_OBLIGACIONES = CTT_OBLIGACIONES.Text;
                                g.CTT_PLAZO = CTT_PLAZO.Text;
                            }

                            contexto.SubmitChanges();
                        }
                    }

                }
            }

            bindEpesAsociados();
            bindEpesDisponibles();
        }
        catch (Exception ex)
        {

            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region btnLiberar_Click
    protected void btnLiberar_Click(object sender, EventArgs e)
    {
        try
        {
            if (StrCttId != "")
            {
                object values = ASPxGridViewEpsRelacionados.GetRowValues(ASPxGridViewEpsRelacionados.FocusedRowIndex, new string[] { "CFE_ID" });
                if (values != null)
                {
                    Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
                    var datosContratacionFinAccion = from a in contexto.CON_CONTRATACION_FIN_ACCION_EPEs
                                                     where a.CFE_ID == Convert.ToDecimal(values.ToString())
                                                     select a;
                    foreach (var v in datosContratacionFinAccion)
                    {
                        v.FAE_ID = null;
                    }
                    contexto.SubmitChanges();


                    CTT_OBJETO.Text = "";
                    CTT_FORMA_PAGO.Text = "";
                    CTT_PLAZO.Text = "";
                    CTT_OBLIGACIONES.Text = "";
                }
            }

            bindEpesDisponibles();
            bindEpesAsociados();
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    protected void btnIniciarProceso_Click(object sender, EventArgs e)
    {
        // EL PROCESO LO INICAR QUIEN DIGITA EL CONTRATO Ejempl Jorge
        // AL AHCER CLICK EN INICIAR PROCESO ENVIA UN CORREO AL SIGUIENTE EN ELFLUJO EJEMPLO Jose Ignacio
        //y cambia el estado del contrato igualmente bloquea el formulario para modificacion 
        // el correo deberia contener el link al contrato se debe ubicar en la pestaña correspondiente y habilitar el boton 
        //guardarContratista();
        //TabPanelContratos.ActiveTabIndex = 1;
        //TabPanelContratos.TabIndex = 1;

        actualizarFaseEnviaCorreo("1", "Pendiente Solicitud de Contrato");
    }

    private void actualizarFaseEnviaCorreo(string strFase, string strObservacionesFase)
    {
        //CONTRATOS
        Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);

        //verificarPermisosBotones(0);

        //Guardar Auditoria
        Model.CON_CONTRATACION_AUDITORIA v = new Model.CON_CONTRATACION_AUDITORIA();
        if (StrCttId != "")
            v.CTT_ID = Convert.ToDecimal(StrCttId);
        v.FEA_OBSERVACIONES = strObservacionesFase;
        v.USU_ID = Usuario.UsuId;
        v.TPE_ID = Convert.ToDecimal(strFase);
        v.CCA_FECHA = DateTime.Today;

        contexto.CON_CONTRATACION_AUDITORIAs.InsertOnSubmit(v);

        verificarPermisosBotones(Convert.ToInt32(strFase));

        //Actualizar el estado del contrato

        var datoContratoActualizar = from a in contexto.CON_CONTRATACIONs
                                     where a.CTT_ID == Convert.ToDecimal(StrCttId)
                                     select a;

        foreach (var x in datoContratoActualizar)
        {
            x.TPE_ID = Convert.ToDecimal(strFase);
        }
        contexto.SubmitChanges();

        BusinessRules.Usuarios objUsuarios = new BusinessRules.Usuarios(ConfigurationManager.AppSettings["Conn"]);
        AdmUsuariosData objAdmUsuariosData = objUsuarios.ConsultarUsuarioPermisosEpes(Usuario.UsuId);


        bool boolBandera = false;
        if (objAdmUsuariosData != null)
            foreach (DataRow objDataRowPermisosEpes in objAdmUsuariosData.Rows)
            {
                int intPermisoUsuario = Convert.ToInt32(objDataRowPermisosEpes[AdmUsuariosData.TEP_ID_FIELD].ToString());
                if (intPermisoUsuario == Convert.ToInt32(strFase))
                {
                    boolBandera = true;
                }
            }
        if (boolBandera)
        {
            verificarPermisosBotones(Convert.ToInt32(strFase));
        }
        else verificarPermisosBotones(10);
        //enviar correo
        BusinessRules.Usuarios objBR = new BusinessRules.Usuarios(ConfigurationManager.AppSettings["Conn"]);
        //miarar que rubro tiene relacinoado
        objAdmUsuariosData = objBR.ConsultarUsuarioCorreosiguienteFase(strFase, StrPlnId);

        //DataRow objRowCorreo = objAdmUsuariosData.Rows[0];
        string stra = StrCttId; // IdentificadorAccId;
        string stre = StrCcoId;//IdentificadorFaeId;
        string strr = StrPlnId;
        foreach (DataRow objRow in objAdmUsuariosData.Rows)
        {
            AdmUsuariosData objAdmUsuariosDataTemp = objBR.ConsultarPermisosRubrosUsuarios(objRow[AdmUsuariosData.USU_ID_FIELD].ToString(), StrPlnId);
            if (objAdmUsuariosDataTemp.Rows.Count > 0)
                if (objAdmUsuariosDataTemp.Rows[0][0].ToString() != "")
                {

                    if (strFase == "3")
                    {
                        //if (ddlAbogados.Value.ToString() == objRow[AdmUsuariosData.USU_ID_FIELD].ToString())
                        if (objBR.correoFaseContrato(objRow[AdmUsuariosData.USU_CORREO_ELECTRONICO_FIELD].ToString().Trim(),
                                          CTT_OBJETO.Text, Usuario.Nombre, stra, strr, stre, strObservacionesFase, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]))
                        {
                            lblMensaje.Text = Utilidad.TraerMensaje("gmsgExitoGuardar");
                            lblMensaje.CssClass = "mensaje";
                            lblMensaje.Visible = true;
                            ASPxPopupControlAbogados.ShowOnPageLoad = false;

                        }
                        // No existe un usuario con el correo dado
                        else
                        {
                            lblMensaje.Text = Utilidad.TraerMensaje("gmsgCorreoElectronicoNoExiste", lblMensaje.Text.Trim());
                            lblMensaje.CssClass = "aviso";
                            lblMensaje.Visible = true;
                        }
                        //break;
                    }
                    else
                    {
                        if (objBR.correoFaseContrato(objRow[AdmUsuariosData.USU_CORREO_ELECTRONICO_FIELD].ToString().Trim(),
                                         CTT_OBJETO.Text, Usuario.Nombre, stra, strr, stre, strObservacionesFase, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]))
                        {
                            lblMensaje.Text = Utilidad.TraerMensaje("gmsgExitoGuardar");
                            lblMensaje.CssClass = "mensaje";
                            lblMensaje.Visible = true;

                        }
                        // No existe un usuario con el correo dado
                        else
                        {
                            lblMensaje.Text = Utilidad.TraerMensaje("gmsgCorreoElectronicoNoExiste", lblMensaje.Text.Trim());
                            lblMensaje.CssClass = "aviso";
                            lblMensaje.Visible = true;
                        }

                    }

                }
        }


    }


    private void actualizarFaseRechazoEPEnviaCorreo(string strFase, string strSubjectCorreoFase, string strObservacionRechazo)
    {


        //CONTRATOS
        Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);

        //verificarPermisosBotones(0);

        //Guardar Auditoria
        Model.CON_CONTRATACION_AUDITORIA v = new Model.CON_CONTRATACION_AUDITORIA();
        if (StrCttId != "")
            v.CTT_ID = Convert.ToDecimal(StrCttId);
        v.FEA_OBSERVACIONES = strObservacionRechazo;
        v.USU_ID = Usuario.UsuId;
        v.TPE_ID = Convert.ToDecimal(strFase);
        v.CCA_FECHA = DateTime.Now;

        contexto.CON_CONTRATACION_AUDITORIAs.InsertOnSubmit(v);

        verificarPermisosBotones(Convert.ToInt32(strFase));

        //Actualizar el estado del contrato

        var datoContratoActualizar = from a in contexto.CON_CONTRATACIONs
                                     where a.CTT_ID == Convert.ToDecimal(StrCttId)
                                     select a;

        foreach (var x in datoContratoActualizar)
        {
            x.TPE_ID = Convert.ToInt32(strFase);
        }
        contexto.SubmitChanges();


        var datoAuditoria = from a in contexto.CON_CONTRATACION_AUDITORIAs
                            join b in contexto.ADM_USUARIOs on a.USU_ID equals b.USU_ID
                            where a.CTT_ID == Convert.ToDecimal(StrCttId)
                            select new
                            {
                                b.USU_CORREO_ELECTRONICO,
                                b.USU_ID
                            };

        BusinessRules.Usuarios objUsuarios = new BusinessRules.Usuarios(ConfigurationManager.AppSettings["Conn"]);
        AdmUsuariosData objAdmUsuariosData = objUsuarios.ConsultarUsuarioPermisosEpes(Usuario.UsuId);
        verificarPermisosBotones(Convert.ToInt32(strFase));




        //enviar correo
        BusinessRules.Usuarios objBR = new BusinessRules.Usuarios(ConfigurationManager.AppSettings["Conn"]);
        //miarar que rubro tiene relacinoado
        objAdmUsuariosData = objBR.ConsultarUsuarioCorreosiguienteFase(strFase, StrPlnId);
        //DataRow objRowCorreo = objAdmUsuariosData.Rows[0];
        string stra = "0";
        string stre = "0";
        string strr = StrPlnId;

        foreach (var x in datoAuditoria)
        {

            objBR.correoRechazoEP(x.USU_CORREO_ELECTRONICO,
                                      CTT_OBJETO.Text, Usuario.Nombre, stra, strr, stre, strSubjectCorreoFase, strObservacionRechazo, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]);

        }



        lblMensaje.Text = Utilidad.TraerMensaje("gmsgExitoGuardar");
        lblMensaje.CssClass = "mensaje";
        lblMensaje.Visible = true;
    }


    //se debe crear una funcionalidad similar a la de Epes para  cargar los USUARIOS con sus flujos

    #region permisosReportes
    private void permisosReportes(bool boolValor)
    {
        btnReporteContratoObra.Visible = boolValor;
        btnReporteTerminosReferencia.Visible = boolValor;
        btnReporteSolicitudContrato.Visible = boolValor;
        btnReportePresentacionPropuesta.Visible = boolValor;
        btnContratoPrestacionServicios.Visible = boolValor;
        btnIdoneidadContratista.Visible = boolValor;
        btnReporteContratoInterventoria.Visible = boolValor;
    }
    #endregion

    #region verificarPermisosBotones

    private void verificarPermisosBotones(int intPermisoEstadoEP)
    {
        switch (intPermisoEstadoEP)
        {
            case 0:
                btnIniciarProceso.Enabled = true;
                btnIniciarProceso.CssClass = "boton";
                btnSolicitarContrato.Enabled = false;
                btnSolicitarContrato.CssClass = "botonInactivo";
                //btnAsignarAbogado.Enabled = false;
                //btnAsignarAbogado.CssClass = "botonInactivo";
                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";
                ASPxGridViewEpsDisponibles.Visible = true;
                btnFinalizarProceso.Enabled = false;
                btnFinalizarProceso.CssClass = "botonInactivo";


                btnGuardarContratos.Enabled = false;
                btnLiberar.Enabled = true;
                btnAsociarEp.Enabled = true;

                btnReporteTerminosReferencia.Visible = true;
                btnReporteSolicitudContrato.Visible = true;
                btnReportePresentacionPropuesta.Visible = true;
                btnIdoneidadContratista.Visible = true;
                btnReporteContratoInterventoria.Visible = false;
                btnContratoPrestacionServicios.Visible = false;
                btnReporteContratoObra.Visible = false;


                AccordionPane1.Enabled = false;


                break;
            case 1:
                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";
                btnSolicitarContrato.Enabled = true;
                btnSolicitarContrato.CssClass = "boton";
                //btnAsignarAbogado.Enabled = false;
                //btnAsignarAbogado.CssClass = "botonInactivo";
                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";
                btnRechazar.Enabled = true;
                btnRechazar.CssClass = "boton";
                btnFinalizarProceso.Enabled = false;
                btnFinalizarProceso.CssClass = "botonInactivo";
                ASPxGridViewEpsDisponibles.Visible = false;
                btnGuardarContratos.Enabled = false;
                btnLiberar.Enabled = false;
                btnAsociarEp.Enabled = false;

                btnReporteTerminosReferencia.Visible = false;
                btnReporteSolicitudContrato.Visible = false;
                btnReportePresentacionPropuesta.Visible = false;
                btnIdoneidadContratista.Visible = false;
                btnReporteContratoInterventoria.Visible = false;
                btnContratoPrestacionServicios.Visible = false;
                btnReporteContratoObra.Visible = false;


                AccordionPane1.Enabled = false;

                break;
            case 3:
                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";
                btnSolicitarContrato.Enabled = false;
                btnSolicitarContrato.CssClass = "botonInactivo";
                //btnAsignarAbogado.Enabled = false;
                //btnAsignarAbogado.CssClass = "botonInactivo";
                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";
                btnRechazar.Enabled = true;
                btnRechazar.CssClass = "boton";
                btnFinalizarProceso.Enabled = true;
                btnFinalizarProceso.CssClass = "boton";
                ASPxGridViewEpsDisponibles.Visible = false;

                btnGuardarContratos.Enabled = true;
                btnLiberar.Enabled = false;
                btnAsociarEp.Enabled = false;

                btnReporteTerminosReferencia.Visible = false;

                btnReporteSolicitudContrato.Visible = false;

                btnReportePresentacionPropuesta.Visible = false;

                btnIdoneidadContratista.Visible = false;

                btnReporteContratoInterventoria.Visible = true;

                btnContratoPrestacionServicios.Visible = true;

                btnReporteContratoObra.Visible = true;


                AccordionPane1.Enabled = true;

                break;

            case 4:
                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";
                btnSolicitarContrato.Enabled = false;
                btnSolicitarContrato.CssClass = "botonInactivo";
                //btnAsignarAbogado.Enabled = true;
                //btnAsignarAbogado.CssClass = "boton";
                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";
                btnRechazar.Enabled = true;
                btnRechazar.CssClass = "boton";
                btnFinalizarProceso.Enabled = false;
                btnFinalizarProceso.CssClass = "botonInactivo";
                ASPxGridViewEpsDisponibles.Visible = false;
                btnGuardarContratos.Enabled = false;
                btnLiberar.Enabled = false;
                btnAsociarEp.Enabled = false;

                btnReporteTerminosReferencia.Visible = false;
                btnReporteSolicitudContrato.Visible = false;
                btnReportePresentacionPropuesta.Visible = false;
                btnIdoneidadContratista.Visible = false;
                btnReporteContratoInterventoria.Visible = false;
                btnContratoPrestacionServicios.Visible = false;
                btnReporteContratoObra.Visible = false;
                AccordionPane1.Enabled = false;
                break;

            case 8:
                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";
                btnSolicitarContrato.Enabled = false;
                btnSolicitarContrato.CssClass = "botonInactivo";
                //btnAsignarAbogado.Enabled = false;
                //btnAsignarAbogado.CssClass = "botonInactivo";
                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";
                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";
                btnFinalizarProceso.Enabled = false;
                btnFinalizarProceso.CssClass = "botonInactivo";
                ASPxGridViewEpsDisponibles.Visible = false;


                btnGuardarContratos.Enabled = false;
                btnLiberar.Enabled = false;
                btnAsociarEp.Enabled = false;

                btnReporteTerminosReferencia.Visible = false;
                btnReporteSolicitudContrato.Visible = false;
                btnReportePresentacionPropuesta.Visible = false;
                btnIdoneidadContratista.Visible = false;
                btnReporteContratoInterventoria.Visible = false;
                btnContratoPrestacionServicios.Visible = false;
                btnReporteContratoObra.Visible = false;

                AccordionPane1.Enabled = false;
                break;

            default:
                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";
                btnSolicitarContrato.Enabled = false;
                btnSolicitarContrato.CssClass = "botonInactivo";
                //btnAsignarAbogado.Enabled = false;
                //btnAsignarAbogado.CssClass = "botonInactivo";
                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";
                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";
                btnFinalizarProceso.Enabled = false;
                btnFinalizarProceso.CssClass = "botonInactivo";
                ASPxGridViewEpsDisponibles.Visible = true;


                btnGuardarContratos.Enabled = false;
                btnLiberar.Enabled = false;
                btnAsociarEp.Enabled = false;

                btnReporteTerminosReferencia.Visible = false;
                btnReporteSolicitudContrato.Visible = false;
                btnReportePresentacionPropuesta.Visible = false;
                btnIdoneidadContratista.Visible = false;
                btnReporteContratoInterventoria.Visible = false;
                btnContratoPrestacionServicios.Visible = false;
                btnReporteContratoObra.Visible = false;

                AccordionPane1.Enabled = false;

                break;
        }
        ///////////////////////////////////////////////////////////////////////////////////////////////////////
        //usuario con perfil de administrador puede habilitar los botones de Actualizar datos del contratisa //
        ///////////////////////////////////////////////////////////////////////////////////////////////////////



    }

    #endregion

    protected void btnRegistrarNuevoContrato1_Click(object sender, EventArgs e)
    {
        limpiarCamposContrato();
        TabPanelContratos.ActiveTabIndex = 2;
        //por defecto debe dejar selccionado seleccion contrato
        rblSeleccionTipoContrato.Value = "1";

        if (TabPanelContratos.ActiveTabIndex == 2)
        {
            CargarDatosContratoPapa();
        }
    }
    protected void btnSolicitarContrato_Click(object sender, EventArgs e)
    {
        //actualizarFaseEnviaCorreo("4", "Pendiente Asignar Abogado");
        actualizarFaseEnviaCorreo("3", "Pendiente Elaborar Contrato");
    }
    protected void btnAsignarAbogado_Click(object sender, EventArgs e)
    {
        ASPxPopupControlAbogados.ShowOnPageLoad = true;

    }
    protected void btnFinalizarProceso_Click(object sender, EventArgs e)
    {
        actualizarFaseEnviaCorreo("8", "Final Proceso");
        //debe enviar correo al supervisor
    }
    protected void Rechazar_Click(object sender, EventArgs e)
    {
        //Actualizar las observaciones del motivo del rechazo
        actualizarFaseRechazoEPEnviaCorreo("0", "CONTRATO RECHAZADO", txtObservacionesRechazo.Text);
        ASPxPopupControlDatos.ShowOnPageLoad = false;
    }

    protected void btnRechazar_Click(object sender, EventArgs e)
    {
        ASPxPopupControlDatos.ShowOnPageLoad = true;
    }
    protected void btnAsignarAbog_Click(object sender, EventArgs e)
    {
        ASPxPopupControlAbogados.ShowOnPageLoad = false;

        actualizarFaseEnviaCorreo("3", "Pendiente Elaborar Contrato");
    }


    protected void btnReproteCertificacionLaboral_Click(object sender, ImageClickEventArgs e)
    {
        Session["CTT_ID"] = StrCttId;
        System.Text.StringBuilder l_msg = new System.Text.StringBuilder();

        string strAdministradores = ConfigurationManager.AppSettings["OtrasEntidades"].ToString();
        string[] strArregloAdministradores = strAdministradores.Split(',');
        bool boolBandera = false;

        foreach (string var in strArregloAdministradores)
        {
            // es administrador mostrar todos
            if (var == StrPlnId)
            {
                boolBandera = true;
                break;
            }
        }


        if (boolBandera)
        {

            //this.crearContextItems();
           
            //TODO: Revisar esta impresión.
            l_msg.Append(@"<script language=javascript>");
            l_msg.Append(@"window.open('ReporteCertificacionLaboralEscuelaTaller.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
            
        }
        else
        {
            //TODO: Revisar esta impresión.
            l_msg.Append(@"<script language=javascript>");
            l_msg.Append(@"window.open('ReporteCertificacionLaboralMinisterioCultura.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
            
        }

        Response.Write(l_msg.ToString());

    }
}